function ActualizarDetallePaciente(id_paciente, opcion){
    opcion = typeof opcion !== 'undefined' ? opcion : 'normal';

    // Borro los datos almacenados 
    if(opcion == 'refresh' && isConnected ){
        window.localStorage.removeItem("paciente_"+id_paciente);
    }

    // Actualizo el link del Refresh del Detalle del Paciente
    $('#refresh_detalle_paciente').attr('href', 'javascript:ActualizarDetallePaciente('+id_paciente+', \'refresh\');');

    // Actualizo el id_paciente para usarlo en la evolucion
    $("#person_id").val(id_paciente);

    // Muestro el loading
    //$.mobile.loading( 'show', {text: 'Cargando...',textVisible: true,theme: 'a',html: ""});
    MostrarLoading();

    //Si tengo los datos guardados localmente, los consulto directamente desde ahi
    var detalle_paciente = JSON.parse(window.localStorage.getItem("paciente_"+id_paciente));

    // Si no hay datos localmente
    if(detalle_paciente == null){
            // Si esta conectado a Internet
            if(isConnected){

                $.ajax({ 
                    type: 'GET',
                    url: url_accesso + '/people/view/'+id_paciente+'.json',
                    dataType :"jsonp",
                    jsonp: false,
                    jsonpCallback: "hcejson",
                    success : function(data){

                        //Guardo en localStorage el resultado para posterior uso si esta vacio
                        if(detalle_paciente == null){ 
                            window.localStorage.setItem("paciente_"+id_paciente, JSON.stringify(data));
                        }

                        // Muestro los turnos
                        MostrarDetallePaciente(data,opcion);
                    },
                    beforeSend: function() {
                        // This callback function will trigger before data is sent
                        $.mobile.loading( 'show', {text: 'Actualizando datos...',textVisible: true,theme: 'a',html: ""});
                    },
                    complete: function() {
                        // This callback function will trigger on data sent/received complete
                        $.mobile.loading( 'hide');
                    },                    
                    error : function(httpReq,status,exception){
                        console.log(status+" "+exception);
                    }
                });

            }else{ // si no esta conectado a Internet

                // Vacio TODOS los registros
                $('#fullname').html('--');
                $('#direccion').html('');
                $('#fecha_nacimiento').html('');
                $('#sexo').html('');
                $('#documento').html('');
                $('#ooss').html('');
                $('#tags').html('');
                $('#grupo-sanguineo').html('');
                $('#email').html('');
                $('#phone').html('');
                $("#contenido_cronologia").html('--');


                $("#contenido_popup_paciente").html('Los datos no están disponibles');
                $("#popup_paciente").popup("open");

                // Oculto el loading
                //$.mobile.loading( 'hide');
                OcultarLoading();

                //Vuevo de donde vengo
                //history.back();
            }

    }else{ // // Si hay datos localmente, los consulto desde aca

        // Muestro los turnos
        MostrarDetallePaciente(detalle_paciente, opcion);
    }
}

$( document ).on( "change", "#fecha_inicio", function() {
    ActualizarTurnos('refresh');
});
$( document ).on( "change", "#fecha_fin", function() {
    ActualizarTurnos('refresh');
});


function MostrarMenu(){
    $(".menu_opciones").toggle();
}

function ActualizarTurnos(opcion){

    opcion = typeof opcion !== 'undefined' ? opcion : 'normal';

    // Borro los datos almacenados 
    if(opcion == 'refresh' && isConnected ){
        window.localStorage.removeItem("turnos");
    }

    // Muestro el loading
    //$.mobile.loading( 'show', {text: 'Cargando...',textVisible: true,theme: 'a',html: ""});
    MostrarLoading();

    //Si tengo los datos guardados localmente, los consulto directamente desde ahi
    var db_turnos = JSON.parse(window.localStorage.getItem("turnos"));

    // Si no hay datos localmente
    if(db_turnos == null){

        if(sesion_activa){

            // Determino el rango de fecha a consultar

            // fecha_inicio
            var fecha_inicio_aux = $("#fecha_inicio").val().split('/');
            var fecha_inicio = fecha_inicio_aux[2] + '-' + fecha_inicio_aux[1] + '-' + fecha_inicio_aux[0];


            // fecha_fin
            var fecha_fin_aux = $("#fecha_fin").val().split('/');
            var fecha_fin = fecha_fin_aux[2] + '-' + fecha_fin_aux[1] + '-' + fecha_fin_aux[0];

            $.ajax({ 
                type: 'GET',
                url: url_accesso + '/turns/listadoturnos/'+fecha_inicio+'/'+fecha_fin+'.json',
                dataType :"jsonp",
                jsonp: false,
                jsonpCallback: "hcejson",
                success : function(data){

                    //Guardo en localStorage el resultado para posterior uso si esta vacio
                    if(db_turnos == null){ 
                        window.localStorage.setItem("turnos", JSON.stringify(data));
                    }


                    // Muestro los turnos
                    MostrarTurnos(data);
                },
                beforeSend: function() {
                    // This callback function will trigger before data is sent
                    $.mobile.loading( 'show', {text: 'Actualizando datos...',textVisible: true,theme: 'a',html: ""});
                },
                complete: function() {
                    // This callback function will trigger on data sent/received complete
                    $.mobile.loading( 'hide');
                },                
                error : function(httpReq,status,exception){
                    console.log(status+" "+exception);
                }
            });

        }else{ // Si no esta activa la session

            // Envio al Login por vencimiento de la Sesion
            $.mobile.changePage("#login");            
        }

    }else{ // // Si hay datos localmente, los consulto desde aca

        // Muestro los turnos
        MostrarTurnos(db_turnos);
    }
}

function ActualizarPacientes(opcion){

    opcion = typeof opcion !== 'undefined' ? opcion : 'normal';

    // Borro los datos almacenados 
    if(opcion == 'refresh' && isConnected ){
        window.localStorage.removeItem("pacientes");

    }

    // Muestro loading
    //$.mobile.loading( 'show', {text: 'Cargando...',textVisible: true,theme: 'a',html: ""});
    MostrarLoading();

    //Si tengo los datos guardados localmente, los consulto directamente desde ahi
    var db_pacientes = JSON.parse(window.localStorage.getItem("pacientes"));

    // Si no hay datos localmente
    if(db_pacientes == null){

        if(sesion_activa){

            $.ajax({ 
                type: 'GET',
                url: url_accesso + '/people/obtenerlistadopacientes/0/9000.json',
                dataType :"jsonp",
                jsonp: false,
                jsonpCallback: "hcejson",
                success : function(data){

                    console.log(data.status);

                    //Guardo en localStorage el resultado para posterior uso si esta vacio
                    if(db_pacientes == null){ 
                        window.localStorage.setItem("pacientes", JSON.stringify(data));
                    }

                    // Muestro los pacientes
                    MostrarPacientes(data);
                },
                beforeSend: function() {
                    // This callback function will trigger before data is sent
                    $.mobile.loading( 'show', {text: 'Actualizando datos...',textVisible: true,theme: 'a',html: ""});
                },
                complete: function() {
                    // This callback function will trigger on data sent/received complete
                    $.mobile.loading( 'hide');
                },
                error : function(httpReq,status,exception){
                    console.log(status+" "+exception);
                }
            });
        }else{ // Si no esta activa la session

            // Envio al Login por vencimiento de la Sesion
            $.mobile.changePage("#login");            
        }


    }else{ // // Si hay datos localmente, los consulto desde aca

        // Muestro los turnos
        MostrarPacientes(db_pacientes);
       
    }
}

function MostrarCronologia(data){

    // Muestro el loading
    //$.mobile.loading( 'show', {text: 'Cargando...',textVisible: true,theme: 'a',html: ""});
    MostrarLoading();

    // Vacio el contenido
    $("#contenido_cronologia").html('');

    // Si hay Cronologias
    if(data.length != 0){

        var html_cronologia = "";

        var fecha_anterior = "";
        var profesional_anterior = "";
        var actividad_anterior = "";

        $.each( data, function( key, value ) {

            if(value.fecha != fecha_anterior){
                html_cronologia = html_cronologia.concat('<div style="border-top: 1px dotted grey;margin-top: 10px;padding-top: 10px;">');
                html_cronologia = html_cronologia.concat('<div style="float: right;">'+
                    '<div class="fecha_resaltada"><b>'+value.fecha+'</b></div>'+
                '</div>');

                profesional_anterior = "";
                actividad_anterior = "";
            }

            if(profesional_anterior != value.profesional){
                html_cronologia = html_cronologia.concat('<div style="font-size: 120%;"><span style="color: #4E89CB;"><b>'+value.profesional+'</b></span></div>');
            }
            
               
            html_cronologia = html_cronologia.concat('<div class="clearfix"></div>' + 
                '<div>');

            if(actividad_anterior != value.actividad){
                html_cronologia = html_cronologia.concat('<div style="font-size: 100%;" class="actividad_muro"><b>'+value.actividad+'</b></div>');
            }            

            html_cronologia = html_cronologia.concat('<div style="display:inline-block;width:99%;">'+value.detalle+' </div>'+
                '</div>'+
            '</div>' );

            fecha_anterior = value.fecha;
            profesional_anterior = value.profesional;
            actividad_anterior = value.actividad;
        });

        $("#contenido_cronologia").html(html_cronologia);


    }else{ // Si no hay Cronologia
        $("#contenido_cronologia").html('No hay registros');
    }

    // Oculto el loading
    //$.mobile.loading( 'hide');    
    OcultarLoading();
}

function MostrarDetallePaciente(data, opcion){
    
    // Vacio TODOS los registros
    $('#fullname').html('');
    $('#direccion').html('');
    $('#fecha_nacimiento').html('');
    $('#sexo').html('');
    $('#documento').html('');
    $('#ooss').html('');
    $('#tags').html('');
    $('#grupo-sanguineo').html('');
    $('#email').html('');
    $('#phone').html('');

    // Si hay Datos para mostrar
    if(data.length != 0){

        $('#fullname').html(data.fname + ' (' + data.edad + ')');

        if (data.dir) {
            $('#direccion').html(data.dir + ' ' + data.loc + ' ' + data.prov);
        }

        //$('#fecha_nacimiento').html('<b>Fecha de Nacimiento:</b> ' + data.fn);

        if (data.nd) {
            $('#documento').html(data.td + ' ' + data.nd);
        }
        $('#ooss').html(data.ooss);
        $('#tags').html(data.tags);
        if (data.gs) {
            $('#grupo-sanguineo').html('<b>Grupo Sanguineo:</b> ' + data.gs);
        }

        if (data.e) {
            $('#email').html('<span class="etiquetas_tags fdo_celeste"><a href="mailto:' + data.e + '"><img src="img/email.png"/></a></span>');
        }

        if (data.tel) {
            $('#phone').html('<span class="etiquetas_tags fdo_celeste"><a href="tel:' + data.tel + '"><img src="img/phone.png"/></a></span>');
        }


        /* ========================================================================= */
        /* Actualizo la Cronologia del Pacientes                                     */
        /* ========================================================================= */

            // Borro los datos almacenados 
            if(opcion == 'refresh' && isConnected ){
                window.localStorage.removeItem("cronologia_"+data.id);
                $("#contenido_cronologia").html('<img src="img/loading3.gif">');
            }

        /* ========================================================================= */
        /* Muestro la Cronologia del Pacientes                                       */
        /* ========================================================================= */

        //Si tengo los datos guardados localmente, los consulto directamente desde ahi
        var detalle_cronologia = JSON.parse(window.localStorage.getItem("cronologia_"+data.id));

        // Si no hay datos localmente
        if(detalle_cronologia == null){

            // Si esta conectado a Internet
            if(isConnected){

                $.ajax({ 
                    type: 'GET',
                    url: url_accesso + '/registros/index/'+data.id+'.json',
                    dataType :"jsonp",
                    jsonp: false,
                    jsonpCallback: "hcejson",
                    success : function(data_cronologia){

                        //Guardo en localStorage el resultado para posterior uso si esta vacio
                        if(detalle_cronologia == null){ 
                            window.localStorage.setItem("cronologia_"+data.id, JSON.stringify(data_cronologia));
                        }

                        // Muestro la Cronologia
                        MostrarCronologia(data_cronologia);
                    },
                    beforeSend: function() {
                        // This callback function will trigger before data is sent
                        $.mobile.loading( 'show', {text: 'Actualizando datos...',textVisible: true,theme: 'a',html: ""});
                    },
                    complete: function() {
                        // This callback function will trigger on data sent/received complete
                        $.mobile.loading( 'hide');
                    },                    
                    error : function(httpReq,status,exception){
                        console.log(status+" "+exception);
                    }
                });

            }else{ // si no esta conectado a Internet

                // Oculto el loading
                //$.mobile.loading( 'hide');
                OcultarLoading();

                $("#contenido_popup_paciente").html('Los datos no están disponibles');
                $("#popup_paciente").popup("open");

            }

        }else{

            // Muestro la Cronologia
            MostrarCronologia(detalle_cronologia);
        }

    }

    // Oculto el loading
    //$.mobile.loading( 'hide');
    OcultarLoading();

}

function MostrarPacientes(data){

    // Vacio la lista
    $("#listado_pacientes").html('');


    // Si hay Pacientes cargados
    if(data.length != 0){

        // Limite de pacientes a mostrar
        limite_pacientes_mostrar = 30;

        contador_aux = 0;
        $.each( data, function( key, value ) {

            contador_aux++

            //Si tengo los datos guardados localmente del paciente, muestro un icono de referencia
            var detalle_cronologia = JSON.parse(window.localStorage.getItem("cronologia_"+value["id"]));

            // Si no hay datos localmente
            if(detalle_cronologia == null){
                ico_offline = '';
            }else{
                ico_offline = '<span class="ui-li-count ui-btn-up-e ui-btn-corner-all" style="right: 6px;margin-top: -25px; padding: 0px;"><img src="img/mobile2.png"></span>';
            }

            $("#listado_pacientes").append('<li><a href="#detailsPage?id=' + value["id"] + '">'+ico_offline+'<h3 class="ui-li-heading">'+ value["fname"] + '</h3><p class="ui-li-desc">'+ value["sex"] + ', '+ value["td"] + ' '+ value["nd"] + ', ' + value["fnac"] + '</p></a></li>');

            if(contador_aux == limite_pacientes_mostrar){
                return false;
            }
        });

        // Configuro el listview con el filtro y el dividers
        $("#listado_pacientes").listview({ autodividers: true, filter: true});

    }else{ // Si no hay pacientes
        $("#listado_pacientes").append('<li>No hay pacientes cargados.<br/><br/>Por el momento, los pacientes solo se cargan desde la versión Web en www.epicrisisweb.com</li>');

        // Configuro el listview con el filtro y el dividers
        $("#listado_pacientes").listview({ autodividers: false, filter: false});
    }

    // Actualizo el listado
    $("#listado_pacientes").listview("refresh");

    // Oculto el loading
    //$.mobile.loading( 'hide');
    OcultarLoading();
}


function MostrarTurnos(data){

    // Vacio la lista
    $("#listado_turnos").html('');

    // Si hay turnos para mostrar
    if(data.length != 0){

        var contador_turnos = 0;
        var fecha_anterior = "";
        var html_elemento;

        $.each( data, function( key, value ) {

            contador_turnos++;
            html_elemento = "";

            if(fecha_anterior != value.fecha){
                $("#listado_turnos").append('<li data-role="list-divider" role="heading">'+ value.dia_semana + ', ' + value.fecha + '</li>');                                
            }

            // Si el paciente no es temporario
            if(value.person_id != 0){


                html_elemento = html_elemento.concat('<li><a href="#detailsPage?id=' + value.person_id + '">');
                html_elemento = html_elemento.concat('<span class="ui-li-count ui-btn-up-c ui-btn-corner-all" style="font-size: 17px;right: 6px;">'+ value.hora + '</span>');

                html_elemento = html_elemento.concat('<h3 class="ui-li-heading">' + value.paciente + ' (' + value.edad + ')</h3>');
                html_elemento = html_elemento.concat('<p class="ui-li-desc">Motivo visita: ' + value.motivo_consulta + '</p>');
                html_elemento = html_elemento.concat('<p class="ui-li-desc">Ult. Actividad: ' + value.ultima_actividad + '</p>');

                if(value.financiadores != ""){
                    html_elemento = html_elemento.concat('<p class="ui-li-desc">Financiador: ' + value.financiadores + '</p>');
                }
                html_elemento = html_elemento.concat('</a></li>');

                $("#listado_turnos").append(html_elemento);

            }else{

                html_elemento = html_elemento.concat('<li>');
                html_elemento = html_elemento.concat('<span class="ui-li-count ui-btn-up-c ui-btn-corner-all" style="font-size: 17px;right: 6px;">'+ value.hora + '</span>');
                html_elemento = html_elemento.concat('<h3 class="ui-li-heading">' + value.nota + '</h3>');
                html_elemento = html_elemento.concat('<p class="ui-li-desc">Motivo visita: ' + value.motivo_consulta + '</p>');
                html_elemento = html_elemento.concat('</li>');

                $("#listado_turnos").append(html_elemento);                                
            }

            fecha_anterior = value.fecha;
        })

        // Configuro el listview con el filtro
        $("#listado_turnos").listview({datafilter: true});
    }else{

        $("#listado_turnos").append('<li class="ui-li ui-li-static ui-btn-up-c ui-first-child">No hay turnos</li>');
    }

    // Actualizo el listado
    $("#listado_turnos").listview("refresh");

    // Oculto el loading
    //$.mobile.loading( 'hide');     
    OcultarLoading();
}

function isLogged(resltadoCallback){

    // Consulto asincronicamente si estoy logueado
    $.ajax({ 
        type: 'GET',
        url: url_accesso + '/users/islogged.json',
        dataType :"jsonp",
        jsonp: false,
        jsonpCallback: "hcejson",
        success : function(data){

            sesion_activa = String(data.logged).toLowerCase() == "true";

//alert('en isLogged = ' + esta_logueado_aux);

            if(!sesion_activa){
                // Fuerzo el autologin si fueron cargados los datos en la configuracion
                AutoLogin();
            }

            // Respuesta Recibida
            resltadoCallback(sesion_activa);

        },
        error : function(httpReq,status,exception){
            // Respuesta Recibida: Error
            resltadoCallback(false);
        }
    });

}



function estoyConectado(){
    //alert("1");
    var networkState = navigator.connection.type;
    //alert("2");

    var states = {};
    states[Connection.UNKNOWN]  = 'Unknown connection';
    states[Connection.ETHERNET] = 'Ethernet connection';
    states[Connection.WIFI]     = 'WiFi connection';
    states[Connection.CELL_2G]  = 'Cell 2G connection';
    states[Connection.CELL_3G]  = 'Cell 3G connection';
    states[Connection.CELL_4G]  = 'Cell 4G connection';
    states[Connection.NONE]     = 'No network connection';

    if(networkState == Connection.NONE){
        isConnected = false;

        // Muestro el Cartel de Sin Conexion
        $("#msg_offline1").show("slow");
        $("#msg_offline2").show("slow");
        $("#msg_offline3").show("slow");
        $("#msg_offline4").show("slow");
        $("#msg_offline5").show("slow");
        $("#msg_offline6").show("slow");        
        $("#msg_offline7").show("slow");        

        // Oculto el loading
        //$.mobile.loading( 'hide');        
        OcultarLoading();
    }else{
        isConnected = true;

        // Oculto el Cartel de Sin Conexion
        $("#msg_offline1").hide("slow");
        $("#msg_offline2").hide("slow");
        $("#msg_offline3").hide("slow");
        $("#msg_offline4").hide("slow");
        $("#msg_offline5").hide("slow");
        $("#msg_offline6").hide("slow");                
        $("#msg_offline7").hide("slow");                

        // Actualizo el estado de la Sesion
        ActualizarSesion();
    }
}

function Logout(){
    sesion_activa = false;

    // Oculto el menu
    $(".menu_opciones").hide();
    $.mobile.loading( 'show', {text: 'Cerrando...',textVisible: true,theme: 'a',html: ""});

    // Hago logout
    $.ajax({ 
        type: 'GET',
        url: url_accesso + '/users/logoutmobile',
        dataType :"jsonp",
        jsonp: false,
        jsonpCallback: "hcejson",
        success : function(data){

            if(data.logout){
                MostrarLoading();
                $.mobile.changePage("#login" , { transition: "slideup" });

            }else{
                alert(data.message);
            }

            $.mobile.loading( 'hide');
        },
        error : function(httpReq,status,exception){
            console.log(status+" "+exception);
            sesion_activa = false;

            //alert("No se pudo cerrar la sesión. Intente más tarde.");
            $.mobile.loading( 'hide');            
        }
    });

}

function botonLogin(){

    // recolecta los valores que inserto el usuario
    var datosUsuario = $("#usermobile").val();
    var datosPassword = $("#passwordmobile").val();

    $.ajax({ 
        type: 'GET',
        url: url_accesso + '/users/loginmobile',
        data :'usermobile='+datosUsuario+'&passwordmobile='+datosPassword,
        dataType :"jsonp",
        jsonp: false,
        jsonpCallback: "hcejson",
        success : function(data){

            // Si se marco recordar, guardo los datos
            if ($('#recordarmobile').is(':checked')) {
                // Guardo los datos de la Configuracion
                window.localStorage.setItem("nameCuenta", datosUsuario);
                window.localStorage.setItem("passCuenta", datosPassword);
            }

            sesion_activa = String(data.authenticated).toLowerCase() == "true";;

            if(data.authenticated){
                //$.mobile.loading( 'show', {text: 'Cargando...',textVisible: true,theme: 'a',html: ""});
                MostrarLoading();
                $.mobile.changePage("#turnos" , { transition: "slideup" });
            }else{
                $("#contenido_popup").html(data.message);
                $("#generic_msg").popup("open");
                return false;
            }
        },
        error : function(httpReq,status,exception){
            console.log(status+" "+exception);
            sesion_activa = false;
            alert("No se pudo iniciar la sesión. Intente más tarde.");            
            return false;
        }
    });
           
};


function guardarEvolucion(){

    // obtengo el texto de la evolucion
    var txt_evolucion = $("#txt_evolucion").val();
    var person_id = $("#person_id").val();

    $.ajax({ 
        type: 'POST',
        url: url_accesso + '/evolutions/mobile',
        data :'txt_evolucion='+escape(txt_evolucion)+'&person_id='+person_id,
        dataType: "html",
        charset: 'UTF-8',
        success : function(data){

            var resultado = data.split('|');

            // si hubo un error, lo informo
            if(resultado[0] == "0"){
                alert(resultado[1]);
            }else{
                // actualizo la cronologia
                ActualizarDetallePaciente(person_id, 'refresh');

                // vacio la evolucion
                $("#txt_evolucion").val("");
            }

        },
        error : function(httpReq,status,exception){
            console.log(status+" "+exception);
            sesion_activa = false;
            alert("No se pudo cargar la evolución. Intente más tarde.");            
            return false;
        }
    });

}

function AutoLogin(){

    // Consulto los valores cargados en configuracion
    var txtNombreCuenta = window.localStorage.getItem("nameCuenta");
    var txtPasswordCuenta = window.localStorage.getItem("passCuenta");

//alert('En AutoLogin');

    // Si existen datos cargados
    if(txtNombreCuenta != null && txtPasswordCuenta != null){

        $.ajax({ 
            type: 'GET',
            url: url_accesso + '/users/loginmobile',
            data :'usermobile='+txtNombreCuenta+'&passwordmobile='+txtPasswordCuenta,
            dataType :"jsonp",
            jsonp: false,
            jsonpCallback: "hcejson",
            success : function(data){

                sesion_activa = String(data.authenticated).toLowerCase() == "true";

//alert('sesion_activa='+sesion_activa);
//alert("data.authenticated="+data.authenticated);
//alert("data.message="+data.message);

                if(!sesion_activa){
                    //alert(data.message);
                }
            },
            beforeSend: function() {
                // This callback function will trigger before data is sent
                $.mobile.loading( 'show', {text: 'Accediendo...',textVisible: true,theme: 'a',html: ""});
            },
            complete: function() {
                // This callback function will trigger on data sent/received complete
                $.mobile.loading( 'hide');
            },
            error : function(httpReq,status,exception){
                console.log(status+" "+exception);
                sesion_activa = false;
                alert("No se pudo iniciar la sesión en forma automática.");            
            }
        });


    }           
};


$(document).on("mobileinit", function(){
    $.mobile.defaultPageTransition = 'none';
    $.mobile.touchOverflowEnabled = true;
    $.support.cors                 = true;
    $.mobile.allowCrossDomainPages = true;
    $.mobile.phonegapNavigationEnabled = true;
    $.mobile.page.prototype.options.domCache = true;
    $.mobile.loader.prototype.options.text = "Cargando...";
    $.mobile.loader.prototype.options.textVisible = true;
    $.mobile.loader.prototype.options.theme = "b";
    $.mobile.loader.prototype.options.html = "";
    $.mobile.page.prototype.options.backBtnText = "Volver";

});


// Defino las fechas de la Turnera
$( document ).on( "pageinit", "#turnos", function() {

    var now = new Date();
    var months = new Array('01','02','03','04','05','06','07','08','09','10','11','12');
    var date = ((now.getDate()<10) ? "0" : "")+ now.getDate();

    var fecha_inicio =  date+ "/" + months[now.getMonth()] + "/" + now.getFullYear();


    var date = new Date();
    date.setDate(date.getDate() + 30);

    var fecha_fin = date.getDate() + "/" + months[date.getMonth()]  + "/" + date.getFullYear();


    $("#fecha_inicio").val(fecha_inicio);
    $("#fecha_fin").val(fecha_fin);
});


// Defino el Autocomplete de Pacientes
$( document ).on( "pageinit", "#pacientes", function() {
    $( "#autocomplete" ).on( "listviewbeforefilter", function ( e, data ) {
        var $ul = $( this ),
            $input = $( data.input ),
            q = $input.val(),
            html = "";
        $ul.html( "" );
        if ( q && q.length > 2 ) {

            $ul.html( '<li><img src="img/loading3.gif"></li>' );
            $ul.listview( "refresh" );

            // Vacio la lista
            $("#listado_pacientes").html('');
    


            //Si tengo los datos guardados localmente, los consulto directamente desde ahi
            var db_pacientes = JSON.parse(window.localStorage.getItem("pacientes"));


            var data_filtrada = new Object();


            // Filtro el Set de Datos
            $.each( db_pacientes, function( key, value ) {

                if(value.fname.toLowerCase().indexOf(q.toLowerCase()) >= 0 || value.nd.toLowerCase().indexOf(q.toLowerCase()) >= 0 ){
                    data_filtrada[key] = value;
                }
            });



            // Muestro los turnos
            MostrarPacientes(data_filtrada);

        }
    });
});

// Monitoreo los cambios de paginas
$(document).on("pagechange", function(e,ob) {
    if (parseFloat(window.device.version) === 7.0) {
       $("a[data-rel|='back']").css("margin-top", "15px");
    }

    // Muestro el loading al cambiar de Pagina
    //$.mobile.loading( 'show', {text: 'Cargando...',textVisible: true,theme: 'a',html: ""});
    MostrarLoading();

    // Cuando se cambia a la pagina Blank
    if(ob.toPage[0].id == "blank"){

        // Muestro el loading
        //$.mobile.loading( 'show', {text: 'Cargando...',textVisible: true,theme: 'a',html: ""});
        MostrarLoading();

        if(sesion_activa){
             $.mobile.changePage("#turnos");
        }else{
            $.mobile.changePage("#login");
        }
    }


    // Cuando se cambia a la pagina de Login
    if(ob.toPage[0].id == "login"){

       // Oculto el loading
        //$.mobile.loading( 'hide');
        OcultarLoading();

        if(sesion_activa){
             $.mobile.changePage("#turnos");
        }
    }

    // Si todavia esta activa la session
//    if(sesion_activa){

        // Cuando se cambia a la pagina de pacientes
        if(ob.toPage[0].id == "pacientes"){
            RegistrarEstadisticas('20');
            ActualizarPacientes();
         }

        // Cuando se cambia a la pagina de turnos
        if(ob.toPage[0].id == "turnos"){
            RegistrarEstadisticas('19');
            ActualizarTurnos();
         }

        // Cuando se cambia al detalle del paciente
        if(ob.toPage[0].id == "detailsPage"){

            RegistrarEstadisticas('22');

            // Obtengo el ID del Paciente
            var id = getURLParameters(ob.absUrl).id;

            ActualizarDetallePaciente(id);
         }

        // Cuando se cambia a la pagina de estadisticas
        if(ob.toPage[0].id == "estadisticas"){
            RegistrarEstadisticas('21');
            ActualizarEstadisticas();
         }

        // Cuando se cambia a la pagina de calculadoras
        if(ob.toPage[0].id == "calculadoras"){
            RegistrarEstadisticas('23');
         }

        // Cuando se cambia a la pagina de Configuracion
        if(ob.toPage[0].id == "configuracion"){
            RegistrarEstadisticas('24');

            // Oculto el menu
            $(".menu_opciones").hide();

            CargarConfiguracion();
         }


//    }else{ // Si la session ya vencio
    //    $.mobile.changePage("#login" , { transition: "slideup" });
//    }
});

function getURLParameters(url){

    var result = {};
    var searchIndex = url.indexOf("?");
    if (searchIndex == -1 ) return result;
    var sPageURL = url.substring(searchIndex +1);
    var sURLVariables = sPageURL.split('&');
    for (var i = 0; i < sURLVariables.length; i++)
    {       
        var sParameterName = sURLVariables[i].split('=');      
        result[sParameterName[0]] = sParameterName[1];
    }
    return result;
}


function validarAcceso(){

    // Si no estoy conectado
    if(!isConnected){
        // Si existen datos locales, accedo a la aplicacion
        var db_turnos = JSON.parse(window.localStorage.getItem("turnos"));

        // Si no hay datos localmente
        if(db_turnos == null){

            // Oculto el loading
            //$.mobile.loading( 'hide');
            OcultarLoading();

            // Ingreso al Login
            $.mobile.changePage("#login");

        }else{
            // Ingreso a la aplicacion
            $.mobile.changePage("#turnos");
        }

    }

    // Averiguo si estoy conectado y con session activa
    isLogged(function(resultado){

        sesion_activa = String(resultado).toLowerCase() == "true";

        // Si esta conectado y con sesion activa
        if(isConnected && sesion_activa){
            // Ingreso a la aplicacion
            $.mobile.changePage("#turnos");
        }

        // Si esta conectado y sin sesion activa
        if(isConnected && !sesion_activa){

            // Si existen datos locales, accedo a la aplicacion
            var db_turnos = JSON.parse(window.localStorage.getItem("turnos"));

            if(db_turnos == null){

                // Oculto el loading
                $.mobile.loading( 'hide'); // Dejarlo para el caso del Login
                OcultarLoading();

                $.mobile.changePage("#turnos");

            }else{ // Si no hay ningun dato, va al login

                // Oculto el loading
                $.mobile.loading( 'hide'); // Dejarlo para el caso del Login
                OcultarLoading();

                // Ingreso al Login
                $.mobile.changePage("#login");

            }
        }
    });    

}

function ActualizarEstadisticas(opcion){

    opcion = typeof opcion !== 'undefined' ? opcion : 'normal';

    // Borro los datos almacenados 
    if(opcion == 'refresh' && isConnected ){
        window.localStorage.removeItem("estadisticas");
    }

    // Muestro el loading
    //$.mobile.loading( 'show', {text: 'Cargando...',textVisible: true,theme: 'a',html: ""});
    MostrarLoading();

    //Si tengo los datos guardados localmente, los consulto directamente desde ahi
    var db_estadisticas = JSON.parse(window.localStorage.getItem("estadisticas"));

    // Si no hay datos localmente
    if(db_estadisticas == null){

        if(sesion_activa){

            $.ajax({ 
                type: 'GET',
                url: url_accesso + '/graficos.json',
                dataType :"jsonp",
                jsonp: false,
                jsonpCallback: "hcejson",
                success : function(data){

                    //Guardo en localStorage el resultado para posterior uso si esta vacio
                    if(db_estadisticas == null){ 
                        window.localStorage.setItem("estadisticas", JSON.stringify(data));
                    }

                    // Muestro las estadisticas
                    MostrarEstadisticas(data);
                },
                error : function(httpReq,status,exception){
                    console.log(status+" "+exception);
                }
            });
        }else{ // Si no esta activa la session

            // Envio al Login por vencimiento de la Sesion
            $.mobile.changePage("#login");            
        }


    }else{ // // Si hay datos localmente, los consulto desde aca

        // Muestro las estadisticas
        MostrarEstadisticas(db_estadisticas);
    }
}


function MostrarEstadisticas(data){

    // Si hay datos cargados
    if(data.length != 0){


                // datos_problemas
                var datos = eval('['+data.datos_problemas+']');

                // Genero las Referencias
                var ref_html = '';
                $.each( datos, function( key, value ) {
                    ref_html = ref_html.concat('<div style="border-bottom: 1px solid #EFEFEF;padding: 5px;font-size: 14px;height: 17px;"><div style="text-align:right; float: left; width: 10%;">'+value[1]+'</div><div style="padding-left: 10px; float: right; width: 85%;text-overflow: ellipsis;overflow: hidden;white-space: nowrap;">'+value[0]+'</div></div>');
                })
                $("#ref_problemas").html(ref_html);


                var plot1 = jQuery.jqplot ('datos_problemas', [datos], 
                    { 
                        title: '<strong>Problemas (Top 7)</strong>', 
                        seriesDefaults: {
                            // Make this a pie chart.
                            shadow: false, 
                            renderer: jQuery.jqplot.PieRenderer, 
                            trendline:{ show:false }, 
                            rendererOptions: {
                                showDataLabels: true,
                                padding: 2, 
                                sliceMargin: 2
                            }
                        }, 
                        grid: {
                            drawBorder: false,
                            shadow: false,
                            background: "white",
                        },                        
                        legend: { show:false, location: 's', showSwatch: true, fontSize: '12px',  placement: 'outside'}
                    }
                );

                // datos_practicas
                var datos = eval('['+data.datos_practicas+']');

                // Genero las Referencias
                ref_html = '';
                $.each( datos, function( key, value ) {
                    ref_html = ref_html.concat('<div style="border-bottom: 1px solid #EFEFEF;padding: 5px;font-size: 14px;height: 17px;"><div style="text-align:right; float: left; width: 10%;">'+value[1]+'</div><div style="padding-left: 10px; float: right; width: 85%;text-overflow: ellipsis;overflow: hidden;white-space: nowrap;">'+value[0]+'</div></div>');
                })
                $("#ref_practicas").html(ref_html);


                var plot2 = jQuery.jqplot ('datos_practicas', [datos], 
                    { 
                        title: '<strong>Prácticas (Top 7)</strong>', 
                        seriesDefaults: {
                            // Make this a pie chart.
                            shadow: false, 
                            renderer: jQuery.jqplot.PieRenderer, 
                            rendererOptions: {
                                showDataLabels: true,
                                padding: 2, 
                                sliceMargin: 2
                            }
                        }, 
                        grid: {
                            drawBorder: false,
                            shadow: false,
                            background: "white",
                        },                             
                        legend: { show:false, location: 's' }
                    }
                );


                // datos_medicamentos
                var datos = eval('['+data.datos_medicamentos+']');

                // Genero las Referencias
                ref_html = '';
                $.each( datos, function( key, value ) {
                    ref_html = ref_html.concat('<div style="border-bottom: 1px solid #EFEFEF;padding: 5px;font-size: 14px;height: 17px;"><div style="text-align:right; float: left; width: 10%;">'+value[1]+'</div><div style="padding-left: 10px; float: right; width: 85%;text-overflow: ellipsis;overflow: hidden;white-space: nowrap;">'+value[0]+'</div></div>');
                })
                $("#ref_medicamentos").html(ref_html);
                                
                var plot3 = jQuery.jqplot ('datos_medicamentos', [datos], 
                    { 
                        title: '<strong>Medicamentos (Top 7)</strong>', 
                        seriesDefaults: {
                            // Make this a pie chart.
                            shadow: false, 
                            renderer: jQuery.jqplot.PieRenderer, 
                            rendererOptions: {
                                showDataLabels: true,
                                padding: 2, 
                                sliceMargin: 2
                            }
                        }, 
                        grid: {
                            drawBorder: false,
                            shadow: false,
                            background: "white",
                        },                             
                        legend: { show:false, location: 's' }
                    }
                );

                // datos_turnos
                var datos = eval('['+data.datos_turnos+']');
                var plot1c = jQuery.jqplot('datos_turnos',[datos],
                    {
                        title: '<strong>Turnos (últimos 12 meses)</strong>', 
                        seriesDefaults: { 
                            showMarker:true,
                            fill: true,
                            fillAndStroke: true,
                            fillColor: '#b3dced',
                            pointLabels: { show:true } 
                        },                    
                        axes: {
                            xaxis: {
                                renderer: jQuery.jqplot.CategoryAxisRenderer,
                                tickRenderer: jQuery.jqplot.CanvasAxisTickRenderer,
                                    tickOptions: {
                                      angle: -90,
                                      fontSize: '14px'
                                    }                                
                            },
                            yaxis: {
                                min: 0
                            }
                        },
                        grid: {
                            drawBorder: false,
                            shadow: false,
                            drawGridLines: false,
                            background: "white",
                        },
                        ticks:[datos],
                        renderer: jQuery.jqplot.LinearAxisRenderer,
                        series:[{color:'#058dc7'}]
                    }
                );



                // data.datos_piramide
                var datos = eval('['+data.datos_piramide+']');

                var ticks = new Array();
                var male = new Array();
                var female = new Array();
                var contador_indice = datos.length;

                $.each( datos, function( key, value ) {
                    contador_indice--;
                    ticks[contador_indice] = value[0];
                    male[contador_indice] = value[1];
                    female[contador_indice] = value[2];

                });            
            
                // Custom color arrays are set up for each series to get the look that is desired.
                // Two color arrays are created for the default and optional color which the user can pick.
                var greenColors = ["#ff1493", "#4169e1"];
             
                // To accomodate changing y axis, need to keep track of plot options.
                // changing axes will require recreating the plot, so need to keep 
                // track of state changes.
                var plotOptions = {
                    // We set up a customized title which acts as labels for the left and right sides of the pyramid.
                    title: '<div><strong>Pirámide poblacional</strong></div><div style="float:left;width:50%;text-align:center;color:#ff1493;"><b>Mujeres</b></div><div style="float:right;width:50%;text-align:center;color:#4169e1;"><b>Hombres</b></div>',
             
                    // by default, the series will use the green color scheme.
                    seriesColors: greenColors,
             
                    grid: {
                        drawBorder: false,
                        shadow: false,
                        background: "white",
                        rendererOptions: {
                            // plotBands is an option of the pyramidGridRenderer.
                            // it will put banding at starting at a specified value
                            // along the y axis with an adjustable interval.
                            plotBands: {
                                show: false,
                                interval: 2
                            }
                        },
                    },
             
                    // This makes the effective starting value of the axes 0 instead of 1.
                    // For display, the y axis will use the ticks we supplied.
                    defaultAxisStart: 0,
                    seriesDefaults: {
                        renderer: jQuery.jqplot.PyramidRenderer,
                        rendererOptions: {
                            barPadding: 4
                        },
                        yaxis: "yaxis",
                        shadow: false
                    },
             
                    // We have 4 series, the left and right pyramid bars and
                    // the left and rigt overlay lines.
                    series: [
                        // For pyramid plots, the default side is right.
                        // We want to override here to put first set of bars
                        // on left.
                        {
                            rendererOptions:{
                                side: 'left',
                                synchronizeHighlight: 0
                            }
                        },
                        {
                            yaxis: "y2axis",
                            rendererOptions:{
                                synchronizeHighlight: 0
                            }
                        },
                        // Pyramid series are filled bars by default.
                        // The overlay series will be unfilled lines.
                        {
                            rendererOptions: {
                                fill: false,
                                side: "left"
                            }
                        },
                        {
                            yaxis: "y2axis",
                            rendererOptions: {
                                fill: false
                            }
                        }
                    ],
             
                    // Set up all the y axes, since users are allowed to switch between them.
                    // The only axis that will show is the one that the series are "attached" to.
                    // We need the appropriate options for the others for when the user switches.
                    axes: {
                        xaxis: {
                            tickOptions: {},
                            rendererOptions: {
                                baselineWidth: 2
                            }
                        },
                        yaxis: {
                            label: "",
                            // Use canvas label renderer to get rotated labels.
                            labelRenderer: jQuery.jqplot.CanvasAxisLabelRenderer,
                            // include empty tick options, they will be used
                            // as users set options with plot controls.
                            tickOptions: {},
                            showMinorTicks: true,
                            ticks: ticks,
                            rendererOptions: {
                                category: true,
                                baselineWidth: 2
                            }
                        },
                        y2axis: {
                            label: "",
                            // Use canvas label renderer to get rotated labels.
                            labelRenderer: jQuery.jqplot.CanvasAxisLabelRenderer,
                            // include empty tick options, they will be used
                            // as users set options with plot controls.
                            tickOptions: { show: false},
                            showMinorTicks: false,
                            ticks: ticks,
                            rendererOptions: {
                                category: true,
                                baselineWidth: 2
                            }
                        }
                    }
                };

                plot1 = jQuery.jqplot("datos_piramide", [male, female], plotOptions);


    }else{ // Si no hay datos

        $("#contenido_popup_estadisticas").html('Para consultar las Estadísticas debe estar conectado.');
        $("#popup_estadisticas").popup("open");
    }

    // Oculto el loading
    //$.mobile.loading( 'hide');
    OcultarLoading();
}

function ActualizarSesion(){
    isLogged(function(resultado){
        sesion_activa = String(resultado).toLowerCase() == "true";

//alert("sesion_activa en ActualizaSesion="+sesion_activa);

        // Actualizo cada 5 min el estado de la conexion de la Sesion
        setTimeout('ActualizarSesion()', (1000 * 60 ) );
    })
}

function MostrarLoading(){

    $("img.cargando").each(function(){
          $(this).attr('src', 'img/loading4.gif');
    });  

}
function OcultarLoading(){
    $("img.cargando").each(function(){
          $(this).attr('src', 'img/ico-refresh.png');
    });  
    $.mobile.loading( 'hide');
}

function irA(destino){

    if(destino == "turnos"){
        //$.mobile.loading( 'show', {text: 'Cargando...',textVisible: true,theme: 'a',html: ""});
        MostrarLoading();
        $.mobile.changePage("#turnos");
    }
}


function btnGuardarConfiguraqcion() {
    var txtNombreCuenta = $('#txtNombreCuenta').val();
    var txtPasswordCuenta = $('#txtPasswordCuenta').val();

    // Guardo los datos de la Configuracion
    window.localStorage.setItem("nameCuenta", txtNombreCuenta);
    window.localStorage.setItem("passCuenta", txtPasswordCuenta);
}

function CargarConfiguracion(){
    //alert("window.device=" + window.device);
    //alert("device.platform=" + device.platform);
    
    // Averiguo la Plataforma del Celular
    var nombrePlataforma = device.platform;
    
    // Consulto los valores cargados
    var txtNombreCuenta = window.localStorage.getItem("nameCuenta");
    var txtPasswordCuenta = window.localStorage.getItem("passCuenta");
    
    if(txtNombreCuenta != null){
        $('#txtNombreCuenta').val(txtNombreCuenta);
    }
    if(txtPasswordCuenta != null){
        $('#txtPasswordCuenta').val(txtPasswordCuenta);
    }
    
    switch(nombrePlataforma){
        case "Android":
            $('#marketandroid').show();
            $('#marketios').hide();
            break;
        case "iOS":
            $('#marketandroid').hide();
            $('#marketios').hide();
            
            break;
    }
    
}

function RegistrarEstadisticas(indicador){
    $('.img_estadisticas').html('<img src="'+ url_accesso + '/estadisticas/save/'+ indicador + '/1" width="1" height="1" />');
}

function onPullDownPacientes (event, data) { 
        ActualizarPacientes('refresh');
        data.iscrollview.refresh();
}    
function onPullDownTurnos (event, data) { 
        ActualizarTurnos('refresh');
        data.iscrollview.refresh();
}    
function onPullDownEstadisticas (event, data) { 
        ActualizarEstadisticas('refresh');
        data.iscrollview.refresh();
}    

// Set-up jQuery event callbacks
$(document).delegate("#pacientes", "pageinit", function bindPullPagePullCallbacks(event) { $(".iscroll-wrapper", this).bind( { iscroll_onpulldown : onPullDownPacientes });});
$(document).delegate("#turnos", "pageinit", function bindPullPagePullCallbacks(event) { $(".iscroll-wrapper", this).bind( { iscroll_onpulldown : onPullDownTurnos });});
$(document).delegate("#estadisticas", "pageinit", function bindPullPagePullCallbacks(event) { $(".iscroll-wrapper", this).bind( { iscroll_onpulldown : onPullDownEstadisticas });});